package com.demo.mybatisjpa.dao;

import com.demo.mybatisjpa.util.SpringUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.NoRepositoryBean;


import java.util.List;

/**
 * @author ruiMin
 * @date 2020/2/2 15:17
 */

/**
 * jpa会将所有继承 Repository的类进行代理实例化，加上注解就不会
 */
@NoRepositoryBean
public interface BaseDao<T,ID> extends JpaRepository<T,ID> {
    /**
     * 通过spring容器获取SqlSessionTemplate
     */
    SqlSessionTemplate instance = SpringUtils.getBean(SqlSessionTemplate.class);
    /**
     * 定义默认实现的接口方法
     * 通过 SqlSessionTemplate 去实现mybatis的使用调用
     *
     * @param statement 表示xml文件中的名称（唯一）【namespace+id】
     * @return   返回执行结果
     */
    default List<T> getList(String statement) {
        return instance.selectList(statement);
    }
}
